package com.distributeredis.redis_springboot.springhutooltest.d2日期和时间;

import cn.hutool.core.date.*;
import org.junit.Test;

import java.util.Calendar;
import java.util.Date;

public class DateUtil {
    @Test
    public void test() {
        // Date，long，Calendar之间的相互转换
        // 当前时间
        DateTime date = cn.hutool.core.date.DateUtil.date();
        DateTime date1 = cn.hutool.core.date.DateUtil.date(Calendar.getInstance());
        DateTime date2 = cn.hutool.core.date.DateUtil.date(System.currentTimeMillis());
        // 当前时间字符串，格式：yyyy-MM-dd HH:mm:ss
        String now = cn.hutool.core.date.DateUtil.now();
        // 当前日期字符串，格式：yyyy-MM-dd
        String today = cn.hutool.core.date.DateUtil.today();

        // 字符串转日期
        String dateStr = "2028-09-12";
        Date dateTime = cn.hutool.core.date.DateUtil.parse(dateStr, "yyyy-MM-dd");

        // 格式化日期输出
        String dateData = "2018-01-02";
        DateTime date11 = cn.hutool.core.date.DateUtil.parse(dateData);
        String format = cn.hutool.core.date.DateUtil.format(date11, "yyyy/MM/dd");  //结果 2017/03/01
        //常用格式的格式化，结果：2017-03-01
        String formatDate = cn.hutool.core.date.DateUtil.formatDate(date11);
        //结果：2017-03-01 00:00:00
        String formatDateTime = cn.hutool.core.date.DateUtil.formatDateTime(date11);
        //结果：00:00:00
        String formatTime = cn.hutool.core.date.DateUtil.formatTime(date11);

        // 获取Date对象中的某个部分
        Date time = cn.hutool.core.date.DateUtil.date();
        // 获取年的部分
        int year = cn.hutool.core.date.DateUtil.year(time);
        // 获取月份，从0开始计数
        int month = cn.hutool.core.date.DateUtil.month(time);
        // 获取月份枚举
        Month month1 = cn.hutool.core.date.DateUtil.monthEnum(time);

        //每天的开始和结束时间，每月的开始和结束时间
        String dateStrs = "2017-03-01 22:33:23";
        Date dates = cn.hutool.core.date.DateUtil.parse(dateStrs);
        //一天的开始，结果：2017-03-01 00:00:00
        Date beginOfDay = cn.hutool.core.date.DateUtil.beginOfDay(dates);
        //一天的结束，结果：2017-03-01 23:59:59
        Date endOfDay = cn.hutool.core.date.DateUtil.endOfDay(dates);

        // 日期时间的偏移，日期或时间的偏移指针对某个日期增加或减少分、小时、天等等，达到日期变更的目的。Hutool也针对其做了大量封装
        String datePian = "2019-01-06 22:32:22";
        DateTime parse = cn.hutool.core.date.DateUtil.parse(datePian);
        DateTime newDate = cn.hutool.core.date.DateUtil.offset(parse, DateField.DAY_OF_MONTH, 2); // 2019-01-08 22:32:22
        // 常用偏移
        DateTime dateTime1 = cn.hutool.core.date.DateUtil.offsetDay(parse, 3);  // 2019-01-09 22:32:22
        DateTime dateTime2 = cn.hutool.core.date.DateUtil.offsetHour(parse, -3);  // 2019-01-06 19:32:22


        // 日期时间差
        String a = "2017-09-09 22:13:21";
        DateTime parse1 = cn.hutool.core.date.DateUtil.parse(a);
        String b = "2017-09-02 22:12:21";
        DateTime parse2 = cn.hutool.core.date.DateUtil.parse(b);
        long between = cn.hutool.core.date.DateUtil.between(parse1, parse2, DateUnit.DAY);
        // 格式化时间差
        String s = cn.hutool.core.date.DateUtil.formatBetween(parse1,parse2, BetweenFormatter.Level.MINUTE);
        //年龄
        int i = cn.hutool.core.date.DateUtil.ageOfNow("1990-01-30");
        //是否闰年
        boolean leapYear = cn.hutool.core.date.DateUtil.isLeapYear(2017);
        System.out.println(between);

    }
}
